/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.resume.sinistre.assembler;

import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import fr.generali.accueilclient.resume.contrat.om.IEnvironnementLie;
import fr.generali.refservcommuns.rce.liste.sinistres.consultationpersonneservice.DossierSinistre;
import fr.generali.refservcommuns.rce.liste.sinistres.consultationpersonneservice.ListeDossierSinistre;
import fr.generali.refservcommuns.rce.liste.sinistres.consultationpersonneservice.PersonneRole;

/**
 * Transforme les numéros de client en un {@link ListeDossierSinistre} utilisable
 * par le service S15
 * 
 * @author Guillaume Lancelin
 */
@Component("environnementLie2ListeDossierSinistreConverter")
public class EnvironnementLie2ListeDossierSinistreConverter implements
    Converter<IEnvironnementLie, ListeDossierSinistre> {
    
    /**
     * LOGGER
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(EnvironnementLie2ListeDossierSinistreConverter.class);

    /**
     * {@inheritDoc}
     */
    public ListeDossierSinistre convert(IEnvironnementLie input) {
        LOGGER.info("assemble");
        ListeDossierSinistre listeDossierSinistre = null;
        List<String> identifiantClients = input == null ? null : input.getIdentifiantClients();
        if (identifiantClients != null && !identifiantClients.isEmpty()) {
            listeDossierSinistre = new ListeDossierSinistre();
            List<DossierSinistre> liste = new ArrayList<DossierSinistre>();
            for (String idClient : identifiantClients) {
                if (idClient != null) {
                    DossierSinistre dossier = new DossierSinistre();
                    PersonneRole role = new PersonneRole();
                    role.setIdentifiantPersonne(idClient);
                    role.setRolePersonne("tous");
                    dossier.setRolePersonne(role);
                    liste.add(dossier);
                }
            }
            listeDossierSinistre.getDossierSinistre().addAll(liste);
        }

        return listeDossierSinistre;
    }
}
